﻿Imports System.IO

Public Class CLaseJuego

    Private MisUsuarios As New List(Of ClaseUsuario)
    Public UsuarioActual As ClaseUsuario


    Public Sub AñadirPuntos(ByVal NombreDeJugador As String, ByVal NumeroDeJuego As String, ByVal NumeroPuntos As Integer)
        Dim PosicionJugador As Integer = 0
        For i = 0 To MisUsuarios.Count - 1
            If MisUsuarios(i).Nick = NombreDeJugador Then PosicionJugador = i
        Next
        MisUsuarios(PosicionJugador).AñadirPuntuaciones(NumeroDeJuego, NumeroPuntos)
    End Sub

    Public ReadOnly Property LeerUsuarios As ObjectModel.ReadOnlyCollection(Of ClaseUsuario)
        Get
            Return MisUsuarios.AsReadOnly
        End Get
    End Property

    

    Public Sub New()
        Dim fich As StreamReader
        Try
            fich = New StreamReader("Usuarios.txt", True)
            While Not fich.EndOfStream
                Dim linea As String = fich.ReadLine 'se lee una linea
                Dim datos() As String = linea.Split("/") 'separa los string dependiendo de un caracter en este caso "-"
                MisUsuarios.Add(New ClaseUsuario(datos(0), datos(1), datos(2), datos(3), datos(4), datos(5)))
            End While
            fich.Close()
        Catch ex As IO.FileNotFoundException
            ' añadir fallo de archivo
            Dim fich2 As StreamWriter
            fich2 = New StreamWriter("Usuarios.txt", False) 'true para que no se carge el fichero cada vez que escribe
            fich2.WriteLine("asd" & "/" & "asd" & "/" & 0 & "/" & 0 & "/" & 0 & "/" & 0)
            MisUsuarios.Add(New ClaseUsuario("asd", "asd", 0, 0, 0, 0))
            fich2.Close()
        Catch ex As Exception
            fich.Close()
            File.Delete("Usuarios.txt")
            MisUsuarios.Clear() 'Exterminio total!!!
        End Try
    End Sub

    Public Function BorrarUsuario(ByVal NumeroUsuario As Integer, ByVal contraseña As String) As String
        If MiJuego.LeerUsuarios(NumeroUsuario).Contraseña = contraseña Then
            MisUsuarios.RemoveAt(NumeroUsuario)

            Try
            Catch ex As Exception
                Return False
            End Try
            Dim fich As StreamWriter
            fich = New StreamWriter("Usuarios.txt", False)
            For i = 0 To MisUsuarios.Count - 1
                'Usuario = New ClaseUsuario(MisUsuarios(i).Nick, MisUsuarios(i).Contraseña, MisUsuarios(i).Puntuacion1, MisUsuarios(i).Puntuacion2, MisUsuarios(i).Puntuacion3, MisUsuarios(i).Puntuacion4)
                fich.WriteLine(MisUsuarios(i).Nick & "/" & MisUsuarios(i).Contraseña & "/" & MisUsuarios(i).PuntuacionBuscaminas & "/" & MisUsuarios(i).PuntuacionSnake & "/" & MisUsuarios(i).PuntuacionParejas & "/" & MisUsuarios(i).PuntuacionPacman)
            Next
            fich.Close()
            Return "Usuario eliminado correctamente"
        End If
        Return "Contraseña Incorrecta"
    End Function

    Public Function AñadirUsuario(ByVal Nuevo As ClaseUsuario) As String
        Dim Usuario As ClaseUsuario
        Try
            Usuario = New ClaseUsuario(Nuevo.Nick, Nuevo.Contraseña, 0, 0, 0, 0)
        Catch ex As Exception
            Return False
        End Try
        If MisUsuarios.Contains(Usuario) Then Return False
        MisUsuarios.Add(Usuario)
        Dim fich As StreamWriter
        fich = New StreamWriter("Usuarios.txt", True) 'true para que no se carge el fichero cada vez que escribe
        fich.WriteLine(Usuario.Nick & "/" & Usuario.Contraseña & "/" & 0 & "/" & 0 & "/" & 0 & "/" & 0)
        fich.Close()
        Return True
    End Function


    Public Sub GuardarPuntuacion(ByVal TodosLosUsuarios As ObjectModel.ReadOnlyCollection(Of ClaseUsuario))
        Dim fich As StreamWriter
        fich = New StreamWriter("Usuarios.txt", False) 'true para que no se carge el fichero cada vez que escribe
        For i = 0 To MiJuego.LeerUsuarios.Count - 1
            fich.WriteLine(TodosLosUsuarios(i).Nick & "/" & TodosLosUsuarios(i).Contraseña & "/" & TodosLosUsuarios(i).PuntuacionBuscaminas & "/" & TodosLosUsuarios(i).PuntuacionSnake & "/" & TodosLosUsuarios(i).PuntuacionParejas & "/" & TodosLosUsuarios(i).PuntuacionPacman)
        Next
        fich.Close()
    End Sub

End Class
